package com.yds.modewithprinceple.builder;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

import com.yds.modewithprinceple.builder.PersonUtil;
import com.yds.modewithprinceple.databinding.ActivityBuilderModeBinding;

/**
 * Builder模式
 *
 * Builder模式是创建一个复杂对象的一种模式，此模式，用户不用知道内部构建细节，可以更好的控制构建流程。
 * 一个复杂对象可以有很多参数、部件，Builder模式就是为了将创建这个复杂对象的过程和对象的众多参数部件分开，
 * 已达到解耦的目的。这样构建过程和部件都可以自由扩展，两者之间的耦合也降到最低。
 */
@SuppressWarnings("all")
public class BuilderPatternActivity extends AppCompatActivity {
    private ActivityBuilderModeBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityBuilderModeBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        PersonUtil.Builder builder = new PersonUtil.Builder();
        builder.setAge(10);
        builder.setName("Simon");
        builder.setCallBack(new PersonUtil.CallBack() {
            @Override
            public void doSomething(String msg) {
                Log.i("Simon", "doSomething = " + msg);
            }
        });
        PersonUtil personUtil = builder.build();

        binding.tvBuilderMsg.setText("/**\n" +
                " * Builder模式\n" +
                " * \n" +
                " * Builder模式是创建一个复杂对象的一种模式，此模式，用户不用知道内部构建细节，可以更好的控制构建流程。\n" +
                " * 一个复杂对象可以有很多参数、部件，Builder模式就是为了将创建这个复杂对象的过程和对象的众多参数部件分开，\n" +
                " * 已达到解耦的目的。这样构建过程和部件都可以自由扩展，两者之间的耦合也降到最低。\n" +
                " */");


    }
}